/* global fis */
fis.set('project.ignore', [
  'server/**',
  'client/**',
  'node_modules/**',
  'pageTool/**',
  // 'component/**',
  // 'widget/**',
  // 'less/**',
  '.git/**',
  '.svn/**',
  'dev/**',
  'dist/**',
  '**/_*.scss',
  '**.sublime-project',
  '**.sublime-workspace',
  'package-lock.json',
  '**.md',
  // '**.map',
  '_blank.html',
  '_blank.htm',
  'fis-conf.js',
  'package.json',
  'MIT-LICENSE'
]);
var xName = "宇航化工";
fis.set('timeDate', Date.now());
var d = new Date();
//fis3 已经默认不自带模块化开发支持，那么如果需要采用 commonjs 规范作为模块化开发，请使用此插件。请配合 mod.js 一起使用。
//注意：需要对目标文件设置 isMod 属性，说明这些文件是模块化代码。
fis.unhook('components')
fis.hook('node_modules')
// fis.hook('commonjs', {
//     extList: ['.js', '.jsx', '.es', '.ts', '.tsx']
// })

// 启用插件
fis.hook('relative');
// 让所有文件，都使用相对路径。
fis.match('**', {
  relative: true
});
// 修复路径问题
fis.match('*.html', {
  relative: '/' 
});
const fileArr = 'header,footer,swiper';
const arrWidget= suffix => fileArr.split(',').map(el => `/widget/${el}/**.${suffix}`)
fis
  .match('::package', {
    postpackager: fis.plugin('loader', {
      // processor: {
      //       '.html': 'html',
      //     }
      // allInOne: true,
      // allInOne: {
      //     css: 'css/${hash}.css',
      //     js: 'pkg/${hash}.js'
      // }
    }),
    packager: fis.plugin('map', {
        '/less/style.less': ['/less/style.less',...arrWidget('less') ],
        '/js/main.js': [...arrWidget('js'), '/js/main.js' ],
    }),

  });

fis
  // .match('/less/style.less', {
  //   packOrder: -100,
  //   packTo: '/less/style.less'
  // })
  // .match(`/widget/{${fileArr}}/**.less`, {
  //   // packOrder: -100,
  //   packTo: '/less/style.less'
  // })
  // .match('/less/style.less', {
  //   packTo: '/less/style.less'
  // })
  // .match(`/widget/{${fileArr}}/**.js`, {
  //   // packOrder: -100,
  //   packTo: '/js/main.js'
  // })
  /**
   * 语言能力拓展相关
   * */
  .match('**.html', { rExt: '.html', parser: fis.plugin('swig2') })

  .match('/{widget,less,css}/(**).less', {
    rExt: '.css',
    parser: fis.plugin('less2', { sourceMap: true }),
  })
  /**
   * 模块化相关
   **/
  .match('widget/**/(**).{html,js,css,less}', {
    // id: '$1',
    isMod: true,
    useSameNameRequire: true
  })
  /**
   * 转移位置
   **/
  .match('node_modules/(**)/(**).{css,css.map}', {
    release: '/css/plugins/$2'
  })
  .match('node_modules/(**)/(**).{js,js.map}', {
    release: '/js/plugins/$2'
  })
// .match('*/(**).html', {
//     release: '/$1.html',
// })
.match('less/(**).{less,css,map}', {
    release: '/css/$1',
    // packTo:'/css/style.css'
})
// .match('widget/**/(**).js', {
//     release: '/js/$1',
//     // packTo:'/js/main.js'
// })
// .match('widget/**/**.less', {
//     release: '/css/style.css',
//     // packTo:'/js/style.js'
// })
// .match('/node_modules/(**)/(**).{ttf,eot,woff,woff2,svg}', {
//     release: '/fonts/$2'
// })
//  .match('/node_modules/(**)/(**).{css,less,map}', {
//      isMod: true,
//      useSameNameRequire: true,
//      id:'$2',
//      release: '/css/plugins/$2'
//  })

// .match('/js/**/*.js', {
//     isMod: true
// })
// .match(/^\/widget\/(.*)\.(js)$/i, {
//     id: '$1',
//     isMod: true
// })
// 支出N层的短名引用
// 'modules/a/b/c/c.js' => require('a/b/c');
// .match(/\/node_modules\/(((.*)\/)?([^\/]+))\/\4\.js/i, {
//     id : '$1',
//     isMod: true
// })


// fis3 release prod 产品发布，进行合并
fis.media('prod')
  .match('/{widget/**,less}}/**.less', {
    optimizer: fis.plugin('clean-css', {
      'keepBreaks': false, //保持一个规则一个换行
      'advanced': false,
      'format': false,
      'aggressiveMerging': false,
      'shorthandCompacting': false,
      // 'compatibility': 'ie7',
      'keepSpecialComments': '*',
      'sourceMap': false,
      // 'relativeTo': file.dirname
    }),
  })
  .match('/less/core/**', { release: false })
  // .match('/{css,less}/**.map', { release: false })
  // .match('/component/**', { release: false })

  .match('/{widget/**,js}/*.js', {
    optimizer: fis.plugin('uglify-js')
  })

  .match('*.png', {
    optimizer: fis.plugin('png-compressor')
  })
  .match('**', {
    deploy: fis.plugin('local-deliver', {
      to: 'dist'
      // to: '../' + xName + '_HTML'
    })
  });
fis.media('zip')
  .match('/{widget/**,less,css}}/**.less', {
    optimizer: fis.plugin('clean-css', {
      'keepBreaks': false, //保持一个规则一个换行
      'advanced': false,
      'format': false,
      'aggressiveMerging': false,
      'shorthandCompacting': false,
      // 'compatibility': 'ie7',
      'keepSpecialComments': '*',
      'sourceMap': false,
      // 'relativeTo': file.dirname
    }),
  })
  .match('/less/core/**', { release: false })
  // .match('/{css,less}/**.map', { release: false })
  // .match('/component/**', { release: false })

  // .match('/{widget/**,js}/(**).js', { release: '/js/$1' })
  .match('/{widget/**,js}/*.js', {
    optimizer: fis.plugin('uglify-js')
  })

  // .match('*.png', {
  //     optimizer: fis.plugin('png-compressor')
  // })

  .match('**', {
    deploy: [
      fis.plugin('zip', {
        filename: `${xName}_${d.getFullYear()}${d.getMonth() + 1}${d.getDate()}.zip`
      }),

      fis.plugin('local-deliver', {
        to: `../`
      })
    ]
  })